package com.frameworks.utils;

import java.io.File;

/** 
* 类说明：
* @author 作者 LUXIN
* @version 创建时间：2016年5月16日10:43:52
*/
public class PathUtils {
    
    private static String webRootPath;
    private static String rootClassPath;
    
    @SuppressWarnings("rawtypes")
    public static String getPath(Class clazz) {
        String path = clazz.getResource("").getPath();
        return new File(path).getAbsolutePath();
    }
    
    public static String getPath(Object object) {
        String path = object.getClass().getResource("").getPath();
        return new File(path).getAbsolutePath();
    }
    
    public static String getRootClassPath() {
        if (rootClassPath == null) {
            try {
                String path = PathUtils.class.getClassLoader().getResource("").toURI().getPath();
                rootClassPath = new File(path).getAbsolutePath();
            }
            catch (Exception e) {
                String path = PathUtils.class.getClassLoader().getResource("").getPath();
                rootClassPath = new File(path).getAbsolutePath();
            }
        }
        return rootClassPath;
    }
    
    public void setRootClassPath(String rootClassPath) {
        PathUtils.rootClassPath = rootClassPath;
    }
    
    public static String getPackagePath(Object object) {
        Package p = object.getClass().getPackage();
        return p != null ? p.getName().replaceAll("\\.", "/") : "";
    }
    
    public static File getFileFromJar(String file) {
        throw new RuntimeException("Not finish. Do not use this method.");
    }
    
    public static String getWebRootPath() {
        if (webRootPath == null)
            webRootPath = detectWebRootPath();
        return webRootPath;
    }
    
    public static void setWebRootPath(String webRootPath) {
        if (webRootPath == null)
            return ;
        
        if (webRootPath.endsWith(File.separator))
            webRootPath = webRootPath.substring(0, webRootPath.length() - 1);
        PathUtils.webRootPath = webRootPath;
    }
    
    private static String detectWebRootPath() {
        try {
            String path = PathUtils.class.getResource("/").toURI().getPath();
            return new File(path).getParentFile().getParentFile().getCanonicalPath();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    
    /*
    private static String detectWebRootPath() {
        try {
            String path = PathKit.class.getResource("/").getFile();
            return new File(path).getParentFile().getParentFile().getCanonicalPath();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    */
}
 